With the accelerating growth of Internet and intranet communication, high-bandwidth applications (such as streaming video), and large information databases, the need for networked storage systems has increased dramatically.
The redundant array of independent disks (RAID) configuration is designed to combine multiple inexpensive disk drives into an array to obtain performance, capacity, and reliability that exceeds that of a single large drive. The array of drives can be made to appear to the host computer as a single logical drive.
There are five primary types of array architectures, i.e., RAID 1 through RAID 5, each providing disk fault tolerance with different compromises in features and performance. In addition to these five redundant array architectures, it has become popular to refer to a non-redundant array of disk drives as a RAID 0 array.
RAIDs 0 and 2-5 employ a technique known as striping that writes a block of data across several hard disk drives. This is a method of combining multiple drives into one logical storage unit. Striping partitions the storage space of each drive into stripes, which can be as small as one sector (typically 512 bytes) or as large as several megabytes. These stripes are then interleaved in a rotating sequence, so that the combined space is composed alternately of stripes from each drive. The specific type of operating environment determines whether large or small stripes are used.
RAID 1 employs a technique known as mirroring that writes duplicate data across at least two hard disk drives. Additionally, some storage systems use a combination of RAID 1 and RAID 0. For example, a logical disk drive may be mirrored by two virtual drives, with each of the two virtual drives comprising two striped physical disk drives. Combinations of RAID 1 and RAID 0 are sometimes referred to as RAID 10 or RAID 1+0.
Of the original five RAID types, RAID 5 has become the most popular with networked storage system integrators. It provides an excellent balance between cost and performance while providing redundant data storage. Under RAID 5, parity information is distributed across all the drives. Unlike other striped RAID architectures, RAID 5 has no dedicated parity drive; therefore, all drives contain data, and read operations can be overlapped on every drive in the array. Write operations typically access one data drive and one parity drive. However, because different records store their parity on different drives, write operations can usually be overlapped. The following is a simplified example of how RAID 5 calculates parity and restores data from a failed drive.
Data reconstruction is accomplished by a RAID controller, in conjunction with array management software that examines the sum of each bit position across a slice of all the functional drives in the RAID 5 to assign an even or odd number to the missing data. The missing bit is the exclusive OR (XOR) of the other data bits in the slice including parity. This process is repeated, slice by slice, until the data is rebuilt. If a hard disk drive fails and the host calls for information on that disk, the data is built dynamically from the remaining hard disk drives and placed into memory until a replacement drive is obtained. In this manner, data loss is prevented. Consistent parity is defined as the parity as recorded on the media, and is the XOR of all the data bits as recorded on the media. If the data from one of the members becomes unavailable, that data may be reconstructed if the parity is consistent.
In any non-mirrored, single-parity RAID system (e.g., RAID 5 described above), a hard disk drive media error, under specific circumstances, can cause incorrect data to be written during a drive rebuild event. If, during the rebuild process, one of the hard disk drives providing data to rebuild a degraded hard disk drive's data onto a new hard disk drive suffers an unrecoverable read error, the following happens: 1) The hard disk drive being read re-maps the data from the sector with the media error to a good sector, and 2) the rebuild process for the degraded drive creates an error for the sector being rebuilt. This sector, while fine from the hard disk drive standpoint, now contains corrupt data. It essential that the storage controller responsible for executing read requests to the RAID retains knowledge of this error. Since the rebuilt hard disk drive in the RAID now reports all sectors as good (it has no knowledge of the rebuild failure), the storage controller is now responsible for creating the drive media error response to any host access to the corrupt sector. In this way, these RAID-level “bad blocks” created by the rebuild process are managed.
U.S. Pat. No. 5,933,592, entitled “Promoting Device Level Error to RAIDset Level Error to Restore Redundancy in a RAID Array Data Storage System,” describes a RAID array that includes redundant storage devices. Data is distributed across the storage devices and organized as slivers of RAID-protected data blocks. This redundancy provides for the reconstruction of valid data when data at a particular data block of a sliver is found to be inconsistent. However, when more than one data block of a sliver is found to have inconsistent data, reconstruction of the inconsistent data blocks may not be possible. Nonetheless, data consistency can still be restored to that sliver. Consistency is restored to such a sliver by replacing any inconsistent data in a data block with predetermined data and reconstructing the parity data block using the predetermined data. Other data in the RAID array keeps track of those data blocks with the predetermined data to indicate that such blocks do not contain valid data.
Although patent '592 helps to improve system performance by restoring redundancy in RAID data blocks, the system described in patent '592 relies on parity coherency reconstruction to restore redundancy.